﻿using CrawlerApp.Core.Entities;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace CrawlerApp.Core.Interfaces
{
    public interface IAccountService
    {
        Task<Account> GetAccountByIdAsync(int id, CancellationToken cancellationToken = default);
        Task<Account> GetAccountByUserNameAsync(string username, CancellationToken cancellationToken = default);
        Task<Account> LoginAsync(string username, string password, CancellationToken cancellationToken = default);
        Task<Account> CreateAccountAsync(string username, CancellationToken cancellationToken = default);
        Task<Account> CreateAccountAsync(string username, string password, CancellationToken cancellationToken = default);
        Account CreatePassword(Account account, string password);
        Task<Account> SetRoleAsync(Account account, string role, CancellationToken cancellationToken = default);
        Task DeleteAccountByIdAsync(int id, CancellationToken cancellationToken = default);
        Task DeleteAccountAsync(Account account, CancellationToken cancellationToken = default);
    }
}
